package main

import (
	"fmt"
)

// 字符
func main() {
	var c1 byte = 'c'
	var c2 rune = 'c'
	fmt.Printf("c1: %v type:%T\n", c1, c1) // c1: 99 type:uint8
	fmt.Printf("c2: %v type:%T\n", c2, c2) // c2: 99 type:int32

	s := "hello 世界!!!"
	fmt.Println("s.len=", len(s)) // len 是球的byte字节的数量
	for i := 0; i < len(s); i++ {
		fmt.Printf("%c", s[i]) // %c 字符
	}
	fmt.Print("\n")
	for _, v := range s { // 从字符串中拿出具体的字符
		fmt.Printf("%c", v)
	}
	fmt.Print("\n")

	// 修改字符串
	str := "胡萝卜"      // '胡' '萝' '卜'
	ss := []rune(str) // 将字符串强制变成一个rune切片
	ss[0] = '白'
	// 将rune切片强制变成一个字符串
	fmt.Printf("%v\n", string(ss)) // 白萝卜

	c3 := "白"
	c4 := '白'
	fmt.Printf("c3: %v type:%T\n", c3, c3) // c3: 白 type:string
	fmt.Printf("c4: %v type:%T\n", c4, c4) // c4: 30333 type:int32

	// 类型转换
	n := 10
	var f float64
	f = float64(n)
	fmt.Printf("f: %v type:%T\n", f, f) // f: 10 type:float64
}
